home *** CD-ROM | disk | FTP | other *** search
- INCLUDE C:\PRG\ASM\MACROS\MACROS.ASM
- EXTRN MYPTYUQQ:FAR
-
- DATA SEGMENT PUBLIC 'DATA'
- ; PUBLIC AND EXTERN DATA
- ; DECLORATIONS GO HERE
- DATA ENDS
-
- DGROUP GROUP DATA
- ASSUME CS: NEWOUT , DS : DGROUP , SS : DGROUP
-
- NEWOUT SEGMENT 'CODE'
- PUBLIC INITOUTS
- PUBLIC FINIOUTS
-
- INITOUTS PROC FAR
- @DOS 35H,21H ; READ OLD 21 INTR
- ;
- ; SETUP LONG JUMPS TO OLD VECTOR
- ;
- MOV CS:WORD PTR [NEW_21_00+1],BX
- MOV CS:WORD PTR [NEW_21_20+1],BX
- MOV CS:WORD PTR [NEW_21_00+3],ES
- MOV CS:WORD PTR [NEW_21_20+3],ES
- PUSH DS
- MOV AX,CS
- CLI
- MOV DS,AX ; SAVE DS FOR M S
- MOV DX,OFFSET NEWOUT: NEW_21
- @DOS 25H,21H ; INSTALL VECTOR
- POP DS ; RESTORE DS
- STI
- RET
- INITOUTS ENDP
-
- FINIOUTS PROC FAR
- PUSH DS
- CLI
- MOV DX, CS:WORD PTR [NEW_21_00+1]
- MOV AX, CS:WORD PTR [NEW_21_00+3]
- MOV DS,AX
- @DOS 25H,21H ; RESTORE OLD VECTOR
- POP DS
- STI
- RET
- FINIOUTS ENDP
-
- NEW_21:
- CMP AH,40H ; CHECK IF FUNCTION 40H
- JE NEW_21_10
- NEW_21_00:
- ;
- ; DIRECT INTER SEG JMPS USED TO SAVE 9 CLOCK CYCLES PER DOS CALL
- ;
- JUMPFAR 0FFFFH,0000H ; DUMMY JMP ADDRESS
- NEW_21_10:
- CMP BL,1 ; CHECK IF OUTPUT
- JE NEW_21_30 ; JMP STD OUTPUT
- NEW_21_20:
- JUMPFAR 0FFFFH,0000H ; DUMMY JMP ADDRESS
- NEW_21_30:
- STI
- PUSH CX ; FOR AX RETURN VAL
- PUSH CX ; FIRST PARAM
- PUSH DS ; SEG PARAM
- PUSH DX ; OFF PARAM
- CALL MYPTYUQQ ; CALL NEW STD OUT
- POP AX ; RESTORE RET VAL
- IRET ; INT RETURN FROM NEW 21
-
- NEWOUT ENDS
- END